home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / kernel / dev / sun4.md / devXbusInt.h < prev    next >
C/C++ Source or Header  |  1992-12-18  |  2KB  |  78 lines

  1. /*
  2.  * devXbusInt.h --
  3.  *
  4.  *    Internal declarations of interface to the xbus board.
  5.  *
  6.  * Copyright 1990 Regents of the University of California
  7.  * Permission to use, copy, modify, and distribute this
  8.  * software and its documentation for any purpose and without
  9.  * fee is hereby granted, provided that the above copyright
  10.  * notice appear in all copies.  The University of California
  11.  * makes no representations about the suitability of this
  12.  * software for any purpose.  It is provided "as is" without
  13.  * express or implied warranty.
  14.  *
  15.  * $Header: /cdrom/src/kernel/Cvsroot/kernel/dev/sun4.md/devXbusInt.h,v 9.3 92/10/23 15:04:46 elm Exp $ SPRITE (Berkeley)
  16.  */
  17.  
  18. #ifndef    _DEV_XBUS_INT_
  19. #define    _DEV_XBUS_INT_
  20.  
  21. #define    DEV_XBUS_STATE_OK        0x1
  22. #define    DEV_XBUS_STATE_XOR_GOING    0x2
  23. #define    DEV_XBUS_STATE_XOR_TEST        0x10
  24. #define    DEV_XBUS_STATE_XOR_TEST_WAITING    0x20
  25. #define    DEV_XBUS_STATE_TESTING        0x40
  26.  
  27. #define    DEV_XBUS_MAX_QUEUED_XORS    20
  28.  
  29. #define    DEV_XBUS_MALLOC_MIN_SIZE    12    /* 4 KB minimum size */
  30. #define    DEV_XBUS_MALLOC_MAX_SIZE    25    /* 32 MB maximum size */
  31. #define    DEV_XBUS_MALLOC_NUM_SIZES    (DEV_XBUS_MALLOC_MAX_SIZE - \
  32.                      DEV_XBUS_MALLOC_MIN_SIZE + 1)
  33. #define    DEV_XBUS_MALLOC_NUM_PTRS    100
  34.  
  35. typedef volatile unsigned int vuint;
  36.  
  37. typedef struct DevXbusXorInfo {
  38.     ReturnStatus status;
  39.     unsigned int    numBufs;
  40.     unsigned int    bufLen;
  41.     unsigned int    destBuf;
  42.     unsigned int    buf[DEV_XBUS_MAX_XOR_BUFS];
  43.     void (*callbackProc)();
  44.     ClientData        clientData;
  45. } DevXbusXorInfo;
  46.  
  47. typedef struct DevXbusFreeMem {
  48.     struct DevXbusFreeMem *next;
  49.     unsigned int    address;
  50. } DevXbusFreeMem;
  51.  
  52. typedef struct DevXbusInfo {
  53.     unsigned int state;
  54.     DevXbusCtrlRegs *regs;
  55.     char*    name;            /* name of device from devConfig.c */
  56.     vuint    *hippidCtrlFifo;
  57.     vuint    *hippisCtrlFifo;
  58.     vuint    *xorCtrlFifo;
  59.     unsigned int addressBase;
  60.     unsigned int resetValue;
  61.     Sync_Semaphore mutex;
  62.     char    semName[30];
  63.     int        boardId;
  64.     DevXbusXorInfo xorQueue[DEV_XBUS_MAX_QUEUED_XORS];
  65.     int        numInQ;
  66.     DevXbusXorInfo* qHead;
  67.     DevXbusXorInfo* qTail;
  68.     DevXbusXorInfo* qEnd;
  69.     DevXbusFreeMem    *freeList[DEV_XBUS_MALLOC_NUM_SIZES];
  70.     DevXbusFreeMem    *freePtrList;
  71. } DevXbusInfo;
  72.  
  73. extern void    DevXbusTestStart ();
  74. extern void    DevXbusTestStop ();
  75. extern void    DevXbusTestStat ();
  76.  
  77. #endif    /* _DEV_XBUS_INT_ */
  78.